<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Configure a lifecycle policy | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="index-lifecycle-management.html" title="ILM: Manage the index lifecycle">
<link rel="prev" href="ilm-wait-for-snapshot.html" title="Wait for snapshot">
<link rel="next" href="index-lifecycle-error-handling.html" title="Resolve lifecycle policy execution errors">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="index-lifecycle-management.html">ILM: Manage the index lifecycle</a></span>
»
<span class="breadcrumb-node">Configure a lifecycle policy <a id="ilm-policy-definition"></a></span>
</div>
<div class="navheader">
<span class="prev">
<a href="ilm-wait-for-snapshot.html">« Wait for snapshot</a>
</span>
<span class="next">
<a href="index-lifecycle-error-handling.html">Resolve lifecycle policy execution errors »</a>
</span>
</div>
<div class="chapter xpack">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="set-up-lifecycle-policy"></a>Configure a lifecycle policy <a id="ilm-policy-definition"></a><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/ilm/set-up-lifecycle-policy.asciidoc">edit</a><a class="xpack_tag" href="/subscriptions"></a>
</h2>
</div></div></div>
<p>For ILM to manage an index, a valid policy
must be specified in the <code class="literal">index.lifecycle.name</code> index setting.</p>
<p>To configure a lifecycle policy for <a class="xref" href="index-rollover.html" title="Rollover">rolling indices</a>,
you create the policy and add it to the <a class="xref" href="indices-templates.html" title="Put index template API">index template</a>.</p>
<p>To use a policy to manage an index that doesn’t roll over,
you can specify a lifecycle policy when you create it.</p>
<p>ILM policies are stored in the global cluster state and can be included in snapshots
by setting <code class="literal">include_global_state</code> to <code class="literal">true</code> when you <a class="xref" href="snapshots-take-snapshot.html" title="Take a snapshot of one or more indices">take the snapshot</a>.
When the snapshot is restored, all of the policies in the global state are restored and any local policies with the same names are overwritten.</p>
<div class="important admon">
<div class="icon"></div>
<div class="admon_content">
<p>When you enable index lifecycle management for Beats or the Logstash Elasticsearch output plugin,
the necessary policies and configuration changes are applied automatically.
You can modify the default policies, but you do not need to explicitly configure a policy or
bootstrap an initial index.</p>
</div>
</div>
<h3>
<a id="ilm-create-policy"></a>Create lifecycle policy<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/ilm/set-up-lifecycle-policy.asciidoc">edit</a>
</h3>
<p>You use the <a class="xref" href="ilm-put-lifecycle.html" title="Create lifecycle policy API">create policy API</a> to define a new lifecycle policy.
For example, the following request creates <code class="literal">my_policy</code>, a
policy that defines a hot and and delete phase.
When the index reaches 25GB, it rolls over directly to the delete phase.
The index is deleted 30 days after rollover.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "25GB" <a id="CO431-1"></a><i class="conum" data-value="1"></i>
          }
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {} <a id="CO431-2"></a><i class="conum" data-value="2"></i>
        }
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1122.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO431-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>Roll over the index when it reaches 25GB in size</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO431-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>Delete the index 30 days after rollover</p>
</td>
</tr>
</table>
</div>
<h3>
<a id="apply-policy-template"></a>Apply lifecycle policy with an index template<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/ilm/set-up-lifecycle-policy.asciidoc">edit</a>
</h3>
<p>To use a policy that triggers the rollover action,
you need to configure the policy in the index template used to create each new index.</p>
<p>In addition to specifying the name of the policy in the <code class="literal">index.lifecycle.name</code> setting,
you specify a <code class="literal">index.lifecycle.rollover_alias</code> for referencing
the indices managed by this policy.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT _template/my_template
{
  "index_patterns": ["test-*"], <a id="CO432-1"></a><i class="conum" data-value="1"></i>
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "my_policy", <a id="CO432-2"></a><i class="conum" data-value="2"></i>
    "index.lifecycle.rollover_alias": "test-alias" <a id="CO432-3"></a><i class="conum" data-value="3"></i>
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1123.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO432-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>Use this template for all new indices whose names begin with <code class="literal">test-</code></p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO432-2"><i class="conum" data-value="2"></i></a></p>
</td>
<td align="left" valign="top">
<p>Apply <code class="literal">my_policy</code> to new indices created with this template</p>
</td>
</tr>
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO432-3"><i class="conum" data-value="3"></i></a></p>
</td>
<td align="left" valign="top">
<p>Define an index alias for referencing indices managed by <code class="literal">my_policy</code></p>
</td>
</tr>
</table>
</div>
<h4>
<a id="create-initial-index"></a>Create an initial managed index<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/ilm/set-up-lifecycle-policy.asciidoc">edit</a>
</h4>
<p>You need to manually create the first index managed by a policy that uses the rollover action
and designate it as the write index.
The name of the index must match the pattern defined in the index template and end with a number.
This number is incremented to generate the name of indices created by the rollover action.</p>
<p>For example, the following request creates the <code class="literal">test-00001</code> index.
Because it matches the index pattern specified in <code class="literal">my_template</code>,
Elasticsearch automatically applies the settings from that template.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT test-000001
{
  "aliases": {
    "test-alias":{
      "is_write_index": true <a id="CO433-1"></a><i class="conum" data-value="1"></i>
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1124.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO433-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>Set this initial index to be the write index for this alias.</p>
</td>
</tr>
</table>
</div>
<p>Now you can start indexing data to the rollover alias specified in the lifecycle policy.
With the sample <code class="literal">my_policy</code> policy, the rollover action is triggered once the initial
index exceeds 25GB.
ILM then creates a new index that becomes the write index for the <code class="literal">test-alias</code>.</p>
<h3>
<a id="apply-policy-manually"></a>Apply lifecycle policy manually<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/ilm/set-up-lifecycle-policy.asciidoc">edit</a>
</h3>
<p>When you create an index, you can apply a lifecycle policy
by specifying the <code class="literal">index.lifecycle.name</code> setting.
This causes ILM to immediately start managing the index.</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT test-index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "my_policy"
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1125.console"></div>
<div class="important admon">
<div class="icon"></div>
<div class="admon_content">
<p>Do not manually apply a policy that uses the rollover action.
Policies that use rollover must be applied by the <a class="xref" href="set-up-lifecycle-policy.html#apply-policy-template" title="Apply lifecycle policy with an index template">index template</a>.
Otherwise, the policy is not carried forward when the rollover action creates a new index.</p>
</div>
</div>
<h4>
<a id="apply-policy-multiple"></a>Apply a policy to multiple indices<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/ilm/set-up-lifecycle-policy.asciidoc">edit</a>
</h4>
<p>You can apply the same policy to multiple indices by using wildcards in the index name
when you call the <a class="xref" href="indices-update-settings.html" title="Update index settings API">update settings</a> API.</p>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<p>Be careful that you don’t inadvertently match indices that you don’t want to modify.</p>
</div>
</div>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT mylogs-pre-ilm*/_settings <a id="CO434-1"></a><i class="conum" data-value="1"></i>
{
  "index": {
    "lifecycle": {
      "name": "mylogs_policy_existing"
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/1126.console"></div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO434-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>Updates all indices with names that start with <code class="literal">mylogs-pre-ilm</code></p>
</td>
</tr>
</table>
</div>
</div>
<div class="navfooter">
<span class="prev">
<a href="ilm-wait-for-snapshot.html">« Wait for snapshot</a>
</span>
<span class="next">
<a href="index-lifecycle-error-handling.html">Resolve lifecycle policy execution errors »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
